package em.util;

import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * JXL操作Excel公共类 1、导出excel：数据为：list-ObjectBean，每个list为一行，ObjectBean需有get方法
 * 2、读取excel：读入JVM的数据为：list<Object>；实体bean需有set方法，且属性顺序与excel中行一致
 */
public class ExcelUtil {
	private WritableWorkbook workbook; // 用来创建excel文件
	private WritableSheet wsheet; // 工作表
	private InputStream inputFile;
	private Workbook book;
	private Sheet sheet; // 工作表

	public ExcelUtil() {
	}

	public static String dateFormat(String dateTime) {
		String str=dateTime.replace("/", "-");
		String mes = null;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date = null;
		try {
			if(str.length()>=10){
				date = sdf.parse(str);
				if (date.getTime() > 0) {
					mes = str;
				} else {
					mes = "";
				}
			}else{
				sdf = new SimpleDateFormat("yy-MM-dd");
				date = sdf.parse(str);
				if (date.getTime() > 0) {
					mes = sdf.parse(str).toLocaleString().substring(0, 10);
				} else {
					mes = "";
				}
			}
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			return "";
		}
		return mes;
	}

	/**
	 * 导出excel表
	 * @param out
	 * @param header
	 * @throws Exception
	 */
	public void writeExcel(OutputStream out, String[] header) throws Exception {
		WritableWorkbook wwb = null;
		try {
			// 首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
			wwb = Workbook.createWorkbook(out);
		} catch (IOException e) {
			e.printStackTrace();
		}
		if (wwb != null) {
			// 创建一个可写入的工作表
			// Workbook的createSheet方法有两个参数，第一个是工作表的名称，第二个是工作表在工作薄中的位置
			WritableSheet ws = wwb.createSheet("sheet1", 0);
			// 写表头
			for (int j = 0; j < header.length; j++) {
				Label lb = new Label(j, 0, header[j]);
				ws.addCell(lb);
			}
			try {
				// 从内存中写入文件中
				wwb.write();
				// 关闭资源，释放内存
				wwb.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}
